package be.ipl.finito.usecases;

import java.util.List;

import javax.ejb.Remote;

import be.ipl.finito.domaine.Grille;
import be.ipl.finito.domaine.Jeton;
import be.ipl.finito.domaine.Joueur;
import be.ipl.finito.domaine.Partie;

@Remote
public interface GestionPartie {

	Partie creerPartie(String login);

	Partie commencerPartie(int idPartie);

	Partie abandonnerPartie(int idPartie, String loginJoueur);

	Partie rejoindreLaPartie(int idPartie, String login);
	
	Partie reprendrePartie(int idPartie, String login);

	Partie getPartie(int idPartie);

	List<Partie> getPartiesEnAttenteDeJoueur();

	List<Joueur> getJoueursDunePartie(int idPartie);

	List<Partie> getPartiesAbandonneesDunJoueur(String login);

	List<Grille> getGrillesTrieesPartieFini(int idPartie);

	Grille getGrille(int idPartie, String loginJoueur);

	List<Jeton> getReserveJeton(int idPartie, String loginJoueur);

	Jeton tirageJeton(int idPartie);

	int lancerDe(int idPartie);

	int getStatDefaiteJoueur(String login);

	int getStatVictoireJoueur(String login);
	
	int getPointsTotalJoueur(String login);

	boolean placerJeton(int idGrille, int idCase, int numJeton);

	boolean annulerPartie(int idPartie);

	boolean isPartieFini(int idPartie);
	
    boolean partieEstAnnuler(int idPartie);

	List<Jeton> getReserveJetonPremierTirage(int idPartie);
	
	boolean indiceCourantMax(int idPartie);
	
	Partie finirPartie(int idPartie);
}